home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
EVISION1.ARJ
/
DEMO.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-19
|
12KB
|
303 lines
//
// Name of program : EVISION.EXE
// Version : 1.0
// Last modified : may 17th, 1992
// Author : Rémy Gendron
// What it does : EasyVision 1.0 demonstration program.
//
//
// ---- Library Header Files -----------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
// ---- Global Macros ------------------------------------------------------
#include "evmacros.hpp"
// ---- Header files of External Functions Called --------------------------
#include "assert.hpp"
#include "tdesktop.hpp"
#include "tstatusline.hpp"
#include "tmenubar.hpp"
#include "getkey.hpp"
#include "twindow.hpp"
// ---- Local Prototypes ---------------------------------------------------
void viewfile ( tstatusline huge *slptr ) ;
void demowindow ( tstatusline huge *slptr ) ;
void about ( tstatusline huge *slptr ) ;
// ---- Global Variables ---------------------------------------------------
char huge *demohelp = // General helptext
"~TNG SOFT~ proudly presents ~EasyVision 1.0~.\n\n"
"This is the ~EasyVison~ demonstration program. EasyVision is a "
"collection of C++ ~functions~ and ~classes~. It will provide you with "
"the tools to easily produce professional looking programs, in a "
"fraction of the time normaly needed for such elegance and "
"performance !\n\n\n All of this demo program was done with "
"less than 150 lines of real coding !\n\n EasyVison was created to be "
"~powerful~, ~reliable~ and ~simple~ to use ! This is not a librairy "
"where you have to learn 3 billion new commands. In fact, there are "
"only ~4 classes~ and ~10 functions~, for a total of roughly 50 commands. "
"You will routinely use only 15 to 20 of those because of "
"all the built in default values.\n\n You will be able to create and "
"manage full featured ~windows~, complete with ~scrolling input fields~ "
"and ~push buttons~. A ~desktop~, a ~statusline~ and a ~menubar~ "
"will get together to create a fully integrated user interface.\n\n"
"The ~F1~ key will always display an ~help "
"window~, and will be available ~everywhere in your program~, without "
"you having to write a single line of code ! "
"You don't have to format the help text either. "
"The built in help function will format the text in the help window "
"with ~word wrapping~ !\n\n"
"So, if you would like to take advantage of this library, just read "
"the manual included in the archive ~EVISION1.ZIP~, and within the "
"hour you will be on your way to a new standard in ~quality~ and "
"~ease of use~ with the EasyVison library !\n\n"
"~STARFLEET COMMAND BBS~ is the home of all of ~TNG SOFT~'s software. "
"Give us a call !\n\n(418) 525-6899/4740/6803\n1200/2400 8N1\n"
"Fidonet address: 1:240/1701\n\n"
"Rémy Gendron" ;
// ---- Main Function ------------------------------------------------------
void main()
{
tdesktop huge *desktop ; // Ptr to classes
tstatusline huge *statusline ; // You should always use HUGE ptrs
tmenubar huge *menubar ;
int command ; // User command
desktop = new tdesktop ; // Create a desktop
assert (desktop != NULL,"main",1) ;
statusline = new tstatusline ; // Create statusline
assert (statusline != NULL,"main",1) ;
menubar = new tmenubar ; // Create menubar
assert (menubar != NULL,"main",1) ;
desktop->insert (statusline) ; // Insert objects in desktop to
desktop->insert (menubar) ; // allow the refresh function
desktop->open () ; // Display desktop
statusline->displayleft ("~F1~ Help") ; // Display statusline
menubar->sethelp (demohelp) ; // Create menus
menubar->setslptr (statusline) ; // Match menubar with statusline
menubar->addmenu ("≡",'S',"System menu") ;
menubar->additem ("Redraw desktop Alt-R",'R',275,
"Redraw the screen") ;
menubar->additem () ;
menubar->additem ("About... Alt-A",'A',286,
"Show version and copyright informations") ;
menubar->addmenu ("Demo",'D',"EasyVision demonstrations") ;
menubar->additem ("View file... Alt-V",'V',303,"View a text file") ;
menubar->additem ("Open window Alt-O",'O',280,"Show an EasyVision window") ;
menubar->additem () ;
menubar->additem ("Exit demo Alt-X",'E',301,"Exit EasyVision demo") ;
menubar->addmenu ("Examples",'E',"Just an example menu") ;
menubar->additem ("Dummy off item... ",'Z',286,
"Menu items can be 'offline'") ;
menubar->additem ("Do nothing item... ",'Y',277,
"This is just an example") ;
menubar->itemsetavail ('E','Z',0) ;
command = 0 ;
while (command != 301) // Alt-X to stop
{
statusline->displayright ("Welcome to ~EasyVison~ !") ;
command = getkey (0,demohelp) ;
command = menubar->trough (command) ;
if (command == 286) about (statusline) ;
if (command == 303) viewfile (statusline) ;
if (command == 280) demowindow (statusline) ;
if (command == 275) desktop->refresh () ;
}
// Demo over
desktop->close () ; // Restore screen
delete statusline ; // Delete classes
delete menubar ;
delete desktop ;
return ;
} // End main
// ---- Function Definitions -----------------------------------------------
void viewfile // View an external text file
( tstatusline huge *slptr ) // Ptr to the statusline
{
twindow huge *winptr ; // Ptr to a twindow class
char temp[41] ; // To get input
int inchar ; // Input from window
winptr = new twindow ; // Create a window
assert (winptr != NULL,"viewfile",1) ;
winptr->winsetpos (8,20) ; // Display window
winptr->winsetsize (9,40) ;
winptr->winsetcolors (MAGENTA) ;
winptr->winsettitle ("View File") ;
winptr->winsethelp (demohelp) ;
winptr->winsetslptr (slptr) ;
winptr->winopen () ;
winptr->winswrite ("Enter path of file to view:",2,1,2) ;
winptr->fieldsetlengths (40,20) ; // Get path of file to view
winptr->fieldsetcolors (BLUE) ;
winptr->fieldsetftr (3,":\\.") ;
winptr->fieldcreate (4,10,"","Enter complete path of some text file") ;
winptr->buttoncreate (6,2," Ok",13,"Accept path") ;
winptr->buttoncreate (6,12," Esc",27,"Abort file viewing") ;
inchar = winptr->wininput () ;
winptr->fieldgetasw (temp) ;
winptr->winclose () ;
if (inchar == 13) // If accept path
{
winptr->winsetpos (2,1) ; // Open a big window
winptr->winsetsize (999,999) ;
winptr->winsetcolors (BLUE) ;
winptr->winsettitle ("View file") ;
winptr->winsethelp (demohelp) ;
winptr->winsetslptr (slptr) ;
winptr->winopen () ;
slptr->displayright ("Viewing file...") ;
winptr->wintextfile (temp) ;
winptr->winclose () ;
}
slptr->displayright () ;
delete (winptr) ;
return ;
} // End view file
// ---- Function Definitions -----------------------------------------------
void demowindow // Play with a window
( tstatusline huge *slptr ) // Ptr to the statusline
{
twindow huge *winptr ; // Ptr to a twindow class
int inchar ; // User input
randomize () ; // Init random number generator
winptr = new twindow ; // Create a window
assert (winptr != NULL,"demowindow",1) ;
winptr->winsetpos (7,20) ; // Display window
winptr->winsetsize (13,40) ;
winptr->winsetcolors (BLUE) ;
winptr->winsettitle ("Demo Window") ;
winptr->winsethelp (demohelp) ;
winptr->winsetslptr (slptr) ;
winptr->winopen () ;
winptr->winwrite ("Alpha",2,2) ;
winptr->winwrite ("Numeric",2,20) ;
winptr->winwrite ("AlphaNumeric",4,2) ;
winptr->winwrite ("No restrictions",4,20) ;
winptr->fieldsetlengths (30,15) ; // Create some input fields
winptr->fieldsetcolors (GREEN) ;
winptr->fieldsetftr (1," ") ;
winptr->fieldcreate (3,2,"Hello there","This field only accepts letters") ;
winptr->fieldsetftr (2,"") ;
winptr->fieldcreate (3,20,"1992","This field only accepts digits") ;
winptr->fieldsetftr (3," ") ;
winptr->fieldcreate (5,2,"Enterprise NCC 1701 D",
"This field accepts letters and digits") ;
winptr->fieldsetftr (0) ;
winptr->fieldcreate (5,20,"EasyVision 1.0 by TNG SOFT !",
"This field accepts anything") ;
// Create some buttons
winptr->buttoncreate (7,2," Move",'M',"Randomly move window") ;
winptr->buttoncreate (7,29," Esc",27,"Close window") ;
winptr->buttoncreate (10,2," Up",'U',"Move window up") ;
winptr->buttoncreate (10,11," Down",'D',"Move window down") ;
winptr->buttoncreate (10,20," Left",'L',"Move window Left") ;
winptr->buttoncreate (10,29," Right",'R',"Move window Right") ;
inchar = 0 ;
while (inchar != 27) // Make window alive
{
inchar = winptr->wininput () ;
if (inchar <= 255) inchar = toupper (inchar) ;
if (inchar == 'U') winptr->winscroll ('U') ;
if (inchar == 'D') winptr->winscroll ('D') ;
if (inchar == 'L') winptr->winscroll ('L') ;
if (inchar == 'R') winptr->winscroll ('R') ;
if (inchar == 'M') winptr->winmove (2+random(11),1+random(41)) ;
}
winptr->winclose () ;
delete (winptr) ;
return ;
} // End demowindow
// ---- Function Definitions -----------------------------------------------
void about // Display info on EasyVision
( tstatusline huge *slptr ) // Ptr to the statusline
{
twindow huge *winptr ; // Ptr to a twindow class
winptr = new twindow ; // Create a window
assert (winptr != NULL,"about",1) ;
winptr->winsetpos (5,20) ; // Display window
winptr->winsetsize (15,40) ;
winptr->winsetcolors (BLUE) ;
winptr->winsettitle ("About") ;
winptr->winsethelp (demohelp) ;
winptr->winsetslptr (slptr) ;
winptr->winopen () ;
winptr->winwrite ("EasyVision 1.0",2,1,2) ;
winptr->winwrite ("The easy to use and powerful",4,1,2) ;
winptr->winwrite ("text mode interface !",5,1,2) ;
winptr->winwrite ("Copyright (c) 1992 by",7,1,2) ;
winptr->winwrite ("TNG SOFT",9,1,2) ;
winptr->winwrite ("The Next Generation Software",10,1,2) ;
winptr->buttoncreate (12,16," Enter",13,"Press ~ENTER~ to continue") ;
(void) winptr->buttoninput () ;
winptr->winclose () ;
delete (winptr) ;
return ;
} // End about
// ---- End Main Source File -----------------------------------------------